Introducción

La evaluación constará en realizar una aplicación en shiny en la cual se medirán las siguientes habilidades:

  1. Instalar paquetes y cargarlos.
  2. Uso de funciones y parámetros.
  3. Copiar código y reusarlo a favor de la creación de la aplicación.
  4. Creación de ui y server básico.
  5. Utilización de otros inputs y outputs.
  6. Publicar usando el servicio shinyapps.io

Deberá crear una aplicación para mostrar el evolutivo del precio de la acción de una empresa.

Paquetes a utilizar

Utilizaremos los paquetes tidyverse y jsonlite por lo que tendrá que instalarlos en caso de que su sesión se RStudio no lo tenga y luego cargarlos:

library(tidyverse)
library(jsonlite)

Función auxiliar

La función la cual el corazón de la app es la siguiente:

obtener_indicadores <- function(empresa = "FALABELLA") {

  
  message("Descargando: ", empresa)
  
  url <- stringr::str_c(
    "https://www.elmercurio.com/inversiones/json/json.aspx?categoria=",
    empresa,
    "&time=10&indicador=2"
  )
  
  d <- jsonlite::read_json(url)$Data
  
  df <- d %>% 
    stringr::str_split(";") %>% 
    dplyr::first() %>% 
    readr::read_delim(delim = ",", col_names = c("fecha", "precio", "vol"))
  
  df <- df %>% 
    mutate(
      fecha = lubridate::ymd_hms(fecha),
      anio = lubridate::year(fecha)
      )
  
  df
  
}

El modo de uso es:

obtener_indicadores("FALABELLA")
## # A tibble: 4,590 x 4
##    fecha               precio         vol  anio
##    <dttm>               <dbl>       <dbl> <dbl>
##  1 2001-07-05 14:35:55   578    319000000  2001
##  2 2001-07-27 16:29:22   580   1682000000  2001
##  3 2001-07-30 16:27:44   575  22425000000  2001
##  4 2001-07-31 15:12:14   578  15606000000  2001
##  5 2001-08-01 16:16:38   572  16588000000  2001
##  6 2001-08-02 16:20:56   565. 28005660000  2001
##  7 2001-08-03 15:59:16   562  96916900000  2001
##  8 2001-08-06 16:30:03   570  66690000000  2001
##  9 2001-08-07 15:03:36   570   2850000000  2001
## 10 2001-08-08 15:59:42   571   2683700000  2001
## # ... with 4,580 more rows

Por favor, notar el tipo y la información de cada columna. Ahora, lo que podríamos hacer es:

data <- obtener_indicadores("FALABELLA")

plot <- ggplot(data) +
  geom_line(aes(fecha, precio), color = "#2196f3")

plot

O mejor un gráfico interactivo a costo (casi) 0!:

library(plotly)
ggplotly(plot)

Empresas

Como mencionamos al comienzo, la aplicación tiene como finalidad mostrar la evolución del precio de la acción de la empresa seleccionada. La lista de posibles empresas se deja a continuación para su uso:

empresas <- c("NUEVAPOLAR", "SMU", "BESALCO", "COPEC", "FALABELLA", "BSANTANDER", 
"CMPC", "CHILE", "SQM-B", "ENELAM", "CENCOSUD", "BCI", "LTM", 
"ENELCHILE", "SM-CHILE B", "CCU", "PARAUCO", "ITAUCORP", "AGUAS-A", 
"COLBUN", "ENTEL", "ECL", "CONCHATORO", "RIPLEY", "AESGENER", 
"ANDINA-B", "SONDA", "CAP", "ILC", "SALFACORP", "SECURITY", "VAPORES", 
"ENELGXCH", "ANTARCHILE", "BANMEDICA", "EMBONOR-B", "FORUS", 
"IAM", "MASISA", "ORO BLANCO", "SK", "SMSAAM")

Primer paso

Se le solicita que la aplicación tenga la siguiente estructura:

Paso Final

La aplicación anterior la debe mejorar con lo siguiente:

  • Agregar inputs para poder seleccionar rango de años a graficar
  • Crear un ouput que mencione el valor promedio de la acción en el periodo seleccionado
  • Hacer que el gráfico sea interactivo, como en el ejemplo.